Some computer systems which process electronic transactions do so in real time, such that the transaction database which stores the transactions is always up-to-date. The data from the transaction database is used to generate various reports, which are generated offline rather than in real time, using batch data that is periodically pulled from the transaction database. A database architecture that works well for real time transaction processing is often inefficient for offline processing. Specifically, a transaction database typically uses normalized tables while a batch job database typically uses denormalized tables. While denormalized tables can be generated from normalized tables, conventional methods for doing so are slow when the tables are extremely large.